//package com.witmore.neutron.ai.cognitive.others.hunyuan;
//
//
//import com.tencentcloudapi.common.AbstractModel;
//import com.tencentcloudapi.common.Credential;
//import com.tencentcloudapi.common.SSEResponseModel;
//import com.tencentcloudapi.common.exception.TencentCloudSDKException;
//import com.tencentcloudapi.common.profile.ClientProfile;
//import com.tencentcloudapi.common.profile.HttpProfile;
//import com.tencentcloudapi.hunyuan.v20230901.HunyuanClient;
//import com.tencentcloudapi.hunyuan.v20230901.models.*;
//import com.witmore.neutron.ai.api.dto.MessageDTO;
//import com.witmore.neutron.ai.cognitive.others.AiModelAdapter;
//import com.witmore.neutron.ai.cognitive.others.ModelType;
//import com.witmore.neutron.ai.db.entity.ModelConfigDO;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//import org.springframework.util.ObjectUtils;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * Description: HunyuanAdapter
// * Author: 豆子高
// * Date: 2025/4/18 16:10
// */
//@Slf4j
//@Service
//public class HunyuanAdapter implements AiModelAdapter {
//
//    @Override
//    public String generateResponse(ModelConfigDO modelConfigDO, MessageDTO messageBO) {
//        log.info("调用原始腾讯云模型：{}，生成响应", modelConfigDO.getModelName());
//        try {
//            // 实例化一个认证对象
//            Credential cred = new Credential(modelConfigDO.getModelApiid(), modelConfigDO.getModelApikey());
//            // 实例化一个http选项，可选的，没有特殊需求可以跳过
//            HttpProfile httpProfile = new HttpProfile();
//            httpProfile.setEndpoint(modelConfigDO.getModelEndpoint());
//            // 实例化一个client选项，可选的，没有特殊需求可以跳过
//            ClientProfile clientProfile = new ClientProfile();
//            clientProfile.setHttpProfile(httpProfile);
//            // 实例化要请求产品的client对象,clientProfile是可选的
//            HunyuanClient client = new HunyuanClient(cred, "", clientProfile);
//            // 实例化一个请求对象,每个接口都会对应一个request对象
//            ChatCompletionsRequest req = new ChatCompletionsRequest();
//            req.setModel(modelConfigDO.getModelName());
//            // message内容填充
//            req.setMessages(this.compactMessage(messageBO));
//            req.setStream(false);
//            req.setTopP(1F);
//            req.setTemperature(1F);
//            // 返回的resp是一个ChatCompletionsResponse的实例，与请求对象对应
//            ChatCompletionsResponse resp = client.ChatCompletions(req);
//            // 输出json格式的字符串回包
//            if (resp.isStream()) {
//                // 流式响应
//                for (SSEResponseModel.SSE e : resp) {
//                    log.info("流式响应-->{}", e.Data);
//                    return e.Data;
//                }
//            } else {
//                // 非流式响应
//                log.info("非流式响应-->{}", AbstractModel.toJsonString(resp));
//                return resp.getChoices()[0].getMessage().getContent();
//            }
//        } catch (TencentCloudSDKException e) {
//            log.error("调用腾讯云接口失败", e);
//        }
//        return "错误";
//    }
//
//    /**
//     * TODO 需要把 系统提示词放进系统参数里面
//     */
//    private Message[] compactMessage(MessageDTO messageBO) {
//        Message[] messages = new Message[1];
//        // 图生文 用户消息
//        Message messageUser = new Message();
//        messageUser.setRole("user");
//
//        List<Content> contents = new ArrayList<>();
//        // 获取提示词
//        Content contentsSysPromptText = new Content();
//        contentsSysPromptText.setType("text");
//        // 获取提示词
//
//        contentsSysPromptText.setText(messageBO.getSysPrompt());
//        contents.add(contentsSysPromptText);
//        // 获取用户消息
//        if (!ObjectUtils.isEmpty(messageBO.getMessage())) {
//            Content contentsUserText = new Content();
//            contentsUserText.setType("text");
//            contentsUserText.setText(messageBO.getMessage());
//            contents.add(contentsUserText);
//        }
//        // 获取图片消息
//        if (!ObjectUtils.isEmpty(messageBO.getUrl())) {
//            Content contentsUserImage = new Content();
//            contentsUserImage.setType("image_url");
//            ImageUrl imageUrl1 = new ImageUrl();
//            imageUrl1.setUrl(messageBO.getUrl());
//            contentsUserImage.setImageUrl(imageUrl1);
//            contents.add(contentsUserImage);
//        }
//        // 将list contents转换成Content[]数组
//        messageUser.setContents(contents.toArray(new Content[0]));
//        messages[0] = messageUser;
//        return messages;
//    }
//
//    @Override
//    public ModelType getModelName() {
//        return ModelType.HUN_YUAN;
//    }
//
//
//}
